package com.docmgmt.mvp.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.*;
import lombok.experimental.Accessors;

/**
 * <p>
 * 文件版本表（v3.0新增version_type支持3种版本类型）
 * </p>
 *
 * @author Dora
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Accessors(chain = true)
@TableName("doc_file_version")
public class FileVersionEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 版本ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 文件ID
     */
    @TableField("file_id")
    private Long fileId;

    /**
     * 版本号（递增）
     */
    @TableField("version")
    private Integer version;

    /**
     * 版本类型（v3.0新增）：auto=自动备份，manual=手动保存，scheduled=定时备份
     */
    @TableField("version_type")
    private String versionType;

    /**
     * 是否为重要版本（永久保留，仅manual类型可标记）
     */
    @TableField("is_major")
    private Boolean isMajor;

    /**
     * 该版本的MinIO存储key
     */
    @TableField("storage_key")
    private String storageKey;

    /**
     * 存储层级（v3.0保留字段）：hot=热存储，cold=冷存储，archived=归档
     */
    @TableField("storage_tier")
    private String storageTier;

    /**
     * 文件大小（字节）
     */
    @TableField("size")
    private Long size;

    /**
     * MD5校验值
     */
    @TableField("md5")
    private String md5;

    /**
     * 修改人ID（auto/scheduled类型为NULL）
     */
    @TableField("editor_id")
    private Long editorId;

    /**
     * 版本说明
     */
    @TableField("comment")
    private String comment;

    /**
     * 创建时间（即版本时间）
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;
}
